Die Expression-SpracheDie After Effects-Expression-Sprache basiert auf JavaScript 1.2, verfügt aber über einen erweiterten Satz integrierter Objekte. After Effects verwendet nur den Kernteil von JavaScript 1.2 und greift nicht auf die webbrowserspezifischen Erweiterungen zurück. Statt der Webbrowser-Erweiterungen arbeitet After Effects mit einem eigenen Satz von Erweiterungsobjekten, wie "Layer" ("Ebene"), "Comp" ("Komposition"), "Footage" und "Camera" ("Kamera"), mit deren Hilfe Sie auf die meisten Werte in einem After Effects-Projekt zugreifen können. (Weitere Informationen zu JavaScript finden Sie in einem der JavaScript-Referenzhandbücher, wie z. B. JavaScript: The Definitive Guide von David Flanagan.) Ein Array ist in JavaScript ein Typ von Objekten, in dem mehrere Zahlen gespeichert werden. Sie können eigene Arrays erstellen, indem Sie eine Zahlenaufstellung in eckige Klammern einschließen und die Zahlen durch Kommas voneinander trennen, z. B.: [10, 23] Die Zuweisung von Arrays zu Variablen ermöglicht es Ihnen, Querverweise auf Arraywerte in anderen Bereichen der Expression zu erstellen. Im folgenden Beispiel wurde die Variable meinArray dem Beispiel oben zugewiesen: meinArray = [10, 23] Die Anzahl der Elemente in einem Array definiert dessen Dimension. (Siehe Dimensionen von Arrays.) meinArray hat zwei Elemente und daher die Dimension 2. Durch Verwendung eckiger Klammern und eines Indexes können Sie angeben, welches Element des Arrays verwendet werden soll, und so auf die einzelnen Elemente zugreifen. (Siehe Vektor- und Arraywerte indexieren.) Jeder Position im Array ist eine Nummer zugewiesen, wobei die Nummerierung bei 0 beginnt. Für unser Beispiel bedeutet das Folgendes: meinArray[0] ist 10 meinArray[1] ist 23 Für den Zugriff auf das dritte Element in einem Array mit drei Dimensionen können Sie [2] verwenden. Wird [2] jedoch in einem zweidimensionalen Array verwendet, gibt After Effects eine Fehlermeldung zurück. Sie können beide Syntaxarten miteinander kombinieren und so sowohl die einzelnen Werte als solche als auch eckige Klammern und einen Index verwenden, um bestimmte Werte zurückgeben zu lassen. Wenn Sie z. B. den x-Wert aus unserem Beispiel als x-Wert für eine neue Expression verwenden möchten, ist es egal, welche der beiden folgenden Expressions Sie wählen, da das Ergebnis identisch ist: [meinArray[0], 5] [10, 5] Viele der Eigenschaften und Methoden in der After Effects-Expression-Sprache haben Arrays als Argumente oder geben Arrays als Werte zurück. So ist z. B. thisLayer.position ein Array, das, abhängig von der jeweiligen Ebene, entweder zwei- oder dreidimensional ist. Wenn Sie also eine Expression schreiben möchten, bei der der y-Wert der Animation eines Objekts erhalten bleiben, der x-Wert aber auf 9 gesetzt werden soll, müssen Sie Folgendes schreiben: y = position[1]; [9, y] oder kürzer: [9, position[1]] Das ist ein wichtiger Punkt, den wir uns anhand eines weiteren Beispiels genauer ansehen möchten. Wenn Sie den Wert der x-Position aus Ebene A mit dem Wert der y-Position aus Ebene B kombinieren möchten, würden Sie Folgendes schreiben: x = thisComp.layer("Ebene A").position[0]; y = thisComp.layer("Ebene B").position[1]; [x, y] Sie werden möglicherweise bemerken, dass viele Eigenschaften und Methoden in After Effects statt Arrays Vektoren als Argumente bzw. Ergebnis haben. JavaScript macht keinen Unterschied zwischen Vektoren und Arrays. Aus mathematischer Sicht betrachtet After Effects ein Array als einen Vektor, wenn dieser entweder einen Punkt oder eine Richtung im Raum darstellt. So gibt position für After Effects einen Vektor zurück. Bei einer Funktion wie audioLevels hingegen, die auch einen zweidimensionalen Wert zurückgibt (Pegel des linken und des rechten Kanals), wird das Ergebnis nicht als Vektor bezeichnet, da es weder einen Punkt noch eine Richtung darstellt. Einige Funktionen in After Effects können mit Vektorargumenten umgehen, sind aber im Allgemeinen nur dann sinnvoll, wenn die zurückgegebenen Werte eine Richtung angeben. So berechnet z. B. cross(vec1, vec2) einen dritten Vektor, der rechtwinklig zu den Eingabevektoren steht. Dies ist dann sinnvoll, wenn vec1 und vec2 zwei Vektoren sind, die Richtungen im Raum darstellen. Stellen sie dagegen nur zwei willkürliche Ansammlungen von Zahlen dar, ergibt das Ganze keinen Sinn. Hinweis: In JavaScript wird ein in einem Objekt gespeicherter Wert als "Property" (Eigenschaft) bezeichnet. After Effects verwendet den Begriff "Eigenschaft (Property)" dagegen zur Bezeichnung von Ebenenattributen im Zeitleisten-Fenster. Daher werden JavaScript-Eigenschaften, die Argumente haben, in der After Effects-Dokumentation als "Methoden" bezeichnet. Hat die Eigenschaft keine Argumente, wird sie "Attribut" genannt. Verwandte Themen: |